#include <string>
#include <iostream>
#include <algorithm>

std::string AddBigNumber(std::string a, std::string b) {

    //a是大数，b是小数
    if (a.size() < b.size()) {
        std::swap(a, b);
    }

    int aLen = a.size();
    int bLen = b.size();

    //准备结果
	//预先分配空间，避免多次扩容
	//分配aLen+1的空间，确保可以容下进位
    std::string result(aLen+1, '0');

    //b补0对齐
    for (int i = 0; i < aLen - bLen; i++) {
        b.insert(b.begin(), '0');
    }

    //进位
    int carry = 0;

    for (int i = aLen - 1; i >= 0; i--) {
        //转成数字，相加，加上进位
        int num = (a[i] - '0') + (b[i] - '0') + carry;
        //计算进位
        carry = num / 10;
        //计算当前位
        num = num % 10;
		//使用下标操作，时间复杂度O(1)
		//当i=aLen-1的时候，i+1=aLen，result[aLen]是最后一个字符
        result[i + 1] = (char)(num + '0');
    }

    //如果最后有进位，首位就是进位
    if (carry > 0) {
        result[0] = (char)(carry + '0');
		return result;
    }

    //如果没有进位，去掉首位多分配的'0'
    return result.substr(1);
}



int main() {

    std::string a;
    std::string b;

    std::getline(std::cin, a);
    std::getline(std::cin, b);

    std::string result = AddBigNumber(a, b);
    std::cout << result << "\n";

    return 0;
}